// Go作者版权所有。版权所有。
// 此源代码的使用受BSD样式的约束
// 可以在许可证文件中找到的许可证。

package bio

import (
	"io"
	"log"
)

// MustClose关闭c并调用log.Fatal，如果它返回非nil错误。
func MustClose(c io.Closer) {
	if err := c.Close(); err != nil {
		log.Fatal(err)
	}
}

// MustWriter返回包装所提供的写入程序的写入程序，
// 除了调用log.Fatal而不是返回非nil错误。
func MustWriter(w io.Writer) io.Writer {
	return mustWriter{w}
}

type mustWriter struct {
	w io.Writer
}

func (w mustWriter) Write(b []byte) (int, error) {
	n, err := w.w.Write(b)
	if err != nil {
		log.Fatal(err)
	}
	return n, nil
}

func (w mustWriter) WriteString(s string) (int, error) {
	n, err := io.WriteString(w.w, s)
	if err != nil {
		log.Fatal(err)
	}
	return n, nil
}
